// Person 类
class Person {
  // name 写了 public 修饰符, age 没写修饰符, 最终都是 public 修饰符
  public name: string
  age: number   // 默认 public

  constructor(name: string, age: number) {
    this.name = name
    this.age = age
  }

  speak() {
    // 类的 【内部】可以访问 public 修饰的 name 和 age
    console.log(`我叫: ${this.name}, 今年${this.age}岁`)
  }
}

// Student 继承 Person 
class Student extends Person {
  study() {
    // 【子类中】可以访问父类中 public 修饰的: name 属性、age属性
    console.log(`${this.age}岁的${this.name}正在努力学习`)
  }
}

const p1 = new Person('张三', 18)
// 类的【外部】可以访问 public 修饰的属性
console.log(p1.name)
console.log(p1.age)
